class_name GameplayEffectAsset
extends Resource

## 效果激活策略
enum Policy {
    Instant,
    Duration,
    Infinite,
}

## 效果名称
@export var name: String

## 效果描述
@export_multiline var description: String

## 效果激活策略
@export var policy: Policy

## 效果持续时间，需要将效果激活策略设置为 Duration
@export_range(0, 1000, 0.1, "or_greater") var duration: float

## 效果激活时所赋予的能力，在效果激活策略为 Instant 时忽视
@export var granted_abilities: Array[GameplayAbilityAsset]

## 效果资源标签
@export var asset_tags: Array[String]

## 效果激活时所赋予的标签，在效果激活策略为 Instant 时忽视
@export var granted_tags: Array[String]

## 效果激活时所不能拥有的标签，否则效果则不能激活
@export var tags_cancelled_effect: Array[String]


#region Need to override
func create_spec(source: AbilitySystemComponent, target: AbilitySystemComponent) -> GameplayEffect:
    return GameplayEffect.new(self, source, target)
#endregion
